/*============================================================================||
||       __  ___  _______    ___  ____  __         ___                        ||
||      /  \/  /_/__  __/_ _/ __\/_/  \/ /   _____/   \                       ||
||     / /\_/ / ___/ / __ `/ /  __/ __/  \  / ___/  `_/                       ||
||    / /  / / __// / /_/ / /__/ / / / /\ \/ __// /\ \                        ||
||   /_/  /_/____/_/\__,_/\___/_/_/ /_/ /_/____/_/ /_/                        ||
||                                                                            ||
||============================================================================||
|| CEvent																	  ||
|| Copyright Tim Jones. All Rights Reserved.                                  ||
||============================================================================*/

#ifndef _CEVENT_H_
	#define _CEVENT_H_

#include <SDL.h>

//==============================================================================

class CEvent {
	public:
		CEvent();

		virtual ~CEvent();

		virtual void OnEvent(SDL_Event* Event);

		//===  Keyboard  =======================================================
		virtual void OnInputFocus();

		virtual void OnInputBlur();

		virtual void OnKeyDown(SDLKey sym, SDLMod mod, Uint16 unicode);

		virtual void OnKeyUp(SDLKey sym, SDLMod mod, Uint16 unicode);
		//======================================================================

		//===  Mouse  ==========================================================
		virtual void OnMouseFocus();

		virtual void OnMouseBlur();

		virtual void OnMouseMove(int mX, int mY, int relX, int relY, bool Left,bool Right,bool Middle);

		virtual void OnMouseWheel(bool Up, bool Down);	//Not implemented

		virtual void OnLButtonDown(int mX, int mY);

		virtual void OnLButtonUp(int mX, int mY);

		virtual void OnRButtonDown(int mX, int mY);

		virtual void OnRButtonUp(int mX, int mY);

		virtual void OnMButtonDown(int mX, int mY);

		virtual void OnMButtonUp(int mX, int mY);
		//======================================================================

		//===  Joystick  =======================================================
		virtual void OnJoyAxis(Uint8 which,Uint8 axis,Sint16 value);

		virtual void OnJoyButtonDown(Uint8 which,Uint8 button);

		virtual void OnJoyButtonUp(Uint8 which,Uint8 button);

		virtual void OnJoyHat(Uint8 which,Uint8 hat,Uint8 value);

		virtual void OnJoyBall(Uint8 which,Uint8 ball,Sint16 xrel,Sint16 yrel);
		//======================================================================

		//===  theApp  =========================================================
		virtual void OnMinimize();

		virtual void OnRestore();

		virtual void OnResize(int w,int h);

		virtual void OnExpose();

		virtual void OnExit();
		//======================================================================

		//===  Other  ==========================================================
		virtual void OnUser(Uint8 type, int code, void* data1, void* data2);
		//======================================================================
};

//==============================================================================

#endif
